package cn.iocoder.yudao.module.erp.dal.mysql.contractfilerelation;

import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.module.erp.controller.admin.contract.contractfilerelation.vo.ContractFileRelationPageReqVO;
import cn.iocoder.yudao.module.erp.dal.dataobject.contractfilerelation.ContractFileRelationDO;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

/**
 * 合同文件关联 Mapper
 *
 * @author 芋道源码
 */
@Mapper
public interface ContractFileRelationMapper extends BaseMapperX<ContractFileRelationDO> {

    default PageResult<ContractFileRelationDO> selectPage(ContractFileRelationPageReqVO reqVO) {
        return selectPage(reqVO, new LambdaQueryWrapperX<ContractFileRelationDO>()
                .eqIfPresent(ContractFileRelationDO::getContractId, reqVO.getContractId())
                .eqIfPresent(ContractFileRelationDO::getFileCategory, reqVO.getFileCategory())
                .likeIfPresent(ContractFileRelationDO::getFileName, reqVO.getFileName())
                .orderByDesc(ContractFileRelationDO::getId));
    }

    default void deleteByContractId(Long contractId){
        LambdaQueryWrapperX<ContractFileRelationDO> wrapper = new LambdaQueryWrapperX<>();
        wrapper.eq(ContractFileRelationDO::getContractId, contractId);
        this.delete(wrapper);
    }

    default void deleteByContractIds(List<Long> contractIds){
        LambdaQueryWrapperX<ContractFileRelationDO> wrapper = new LambdaQueryWrapperX<>();
        wrapper.in(ContractFileRelationDO::getContractId, contractIds);
        this.delete(wrapper);
    }

    default List<ContractFileRelationDO> selectByContractIds(Long contractId, String fileCategory){
        LambdaQueryWrapperX<ContractFileRelationDO> wrapper = new LambdaQueryWrapperX<>();
        wrapper.eq(ContractFileRelationDO::getContractId, contractId)
                .eq(ContractFileRelationDO::getFileCategory, fileCategory);
        return this.selectList(wrapper);
    }
}